1. Field of the Invention
The present invention relates generally to the field of software debugging and, more specifically, to visual inspection and debugging of threads in parallel computing systems.
2. Description of the Related Art
Software debugging tools allow software developers to inspect the flow of execution of a set of instructions executed by a processor. For example, a software developer may analyze the state of a variable included in the set of instructions by inspecting the value of the variable at different points during the execution of the set of instructions. Traditional software debugging tools are designed for sequential execution, where each instruction is executed once after a previous instruction and the software developer steps through each instruction to examine the state of the thread executing the instruction.
Traditional software debugging tools are effective when the set of instructions is executed on a limited number of threads, such as in a central processing unit (CPU). However, parallel processing units, such as graphics processing unit (GPUs), usually include a large number of threads that execute the same instruction in a set of instructions on different slices of data in a parallel execution environment. When using traditional software debugging tools to debug instructions executed on a parallel processing unit, the software developer cannot gain much information regarding the execution of the instructions by examining the state of a single thread. Therefore, traditional software debugging tools are ineffective when the set of instructions is executed on parallel processing unit.
As the foregoing illustrates, what is needed in the art is an effective mechanism for debugging instructions executing on a parallel processing unit, such as a GPU.